import java.time.Instant;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

/**
 * @author wangxiyue@cyou-inc.com
 * @date 2019-08-29
 * @since 1.0.0
 */
public class TimerTest {

    public static void main(String[] args) {

//        new TimerTest().demo1();
//        new TimerTest().demo2();
//        new TimerTest().demo3();
//        new TimerTest().demo3();
//        new TimerTest().demo3();
        new TimerTest().demo5();
    }

    /**
     * 指定时间后执行一次，然后每隔1s执行一次
     */
    public void demo6() {
        System.out.println("demo6 开始执行.");
        new Timer("demo6", false).scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                System.out.println(Instant.now().getEpochSecond() + "   demo6..执行了。。。");
            }
        }, new Date(System.currentTimeMillis() + 5000), 1000);
    }

    /**
     * 5s后执行一次，然后每隔1s执行一次
     */
    public void demo5() {
        System.out.println("demo5开始执行.");
        new Timer("demo5", false).scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                System.out.println(Instant.now().getEpochSecond() + "   demo5..执行了。。。");
            }
        }, 5000, 1000);
    }

    /**
     * 5s后执行一次，然后每隔1s执行一次
     */
    public void demo3() {
        System.out.println("demo3开始执行.");
        new Timer("demo3", false).schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println(Instant.now().getEpochSecond() + "   demo3..执行了。。。");
            }
        }, 5000, 1000);
    }

    /**
     * 指定的时间上执行一次，然后每隔1s执行一次
     */
    public void demo4() {
        System.out.println("demo3开始执行.");
        new Timer("demo3", false).schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println(Instant.now().getEpochSecond() + "   demo3..执行了。。。");
            }
        }, new Date(System.currentTimeMillis() + 5000), 1000);
    }

    public void demo1() {
        System.out.println("demo1开始执行.");
        Timer demo3 = new Timer("demo1");
        demo3.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println(Instant.now().getEpochSecond() + "   demo1..执行了。。。");
            }
        }, 500);
        demo3.cancel();
    }

    /**
     * 仅在指定的日期上执行一次
     */
    public void demo2() {
        System.out.println("demo1开始执行.");
        Timer demo3 = new Timer("demo1");
        demo3.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println(Instant.now().getEpochSecond() + "   demo1..执行了。。。");
            }
        }, new Date(System.currentTimeMillis() + 5000));
        demo3.cancel();
    }


}
